草庐IT

HTTP 消息结构

全部标签

go - 对结构字段进行持续更改*并*满足 Writer 接口(interface)?

这个问题在这里已经有了答案:XdoesnotimplementY(...methodhasapointerreceiver)(4个答案)关闭4年前。为了实际更改方法中的struct字段,您需要一个指针类型的接收器。Iunderstandthat.为什么我不能用指针接收器满足io.Writer接口(interface),以便我可以更改结构字段?有没有惯用的方法来做到这一点?//CountWriterisatyperepresentingawriterthatalsocountstypeCountWriterstruct{CountintOutputio.Writer}func(cw*Co

go - 将结构从字符串数组更改为深度数组

我有以下结构,我手动创建了值,如appservicerunneretcfuncCmr(mPathstring)[][]string{cav:=[][]string{{mPath,"app","app2"},{mPath,"service"},{mPath,"runner1","runner2","runner3"},}returncav}现在我需要从这个输入创建这个结构,我的意思是返回相同的结构‘cav`现在我有其他函数返回字符串数组namecmdList每行在值之间有一个空格分隔符r,例如appapp2appN0=appapp21=service2=runner1runner2run

go - 如何将结构转换为基本类型,而不是 Go 中的直接类型?

我需要将未知立即类型的接口(interface)转换为已知的基本类型。例子packagemainimport("fmt""reflect")typeAstruct{foostring}typeBAfuncmain(){bS:=B{foo:"foo"}bI:=reflect.ValueOf(bS).Interface()fmt.Println(bI)aS:=bI.(A)fmt.Println(aS)}当这段代码运行时,可以理解的是,它会出现panic并显示以下消息panic:interfaceconversion:interface{}ismain.B,notmain.A在这个例子中:类

go - 读取 http 响应时内存使用量增加

我正在开发一个工具,其中有300个从公共(public)云下载文件的例程。所有例程都并行地逐block下载文件(云支持api)。我最初创建了一个给定大小的文件和内存映射它。现在我正在使用io.ReadFullapi将响应主体直接读入内存映射byteslice。这样,内存最终会达到100%。 最佳答案 就我而言,复制移动就像您分配一个新数组并将元素复制到其中一样,内存将是初始数组的两倍大小。顺便说一句,从http响应体读取数据后,你应该关闭它,比如:deferresp.Body.Close()

sorting - 按指定字段对结构 slice 进行排序

假设我有结构SortableStruct有3个字段ABC我想实现消费函数sl[]SortableStruct和orderFiedstring其中orderField是结构的字段之一。此函数应重新运行按orderField排序的slice。有没有办法在没有巨大开关盒的情况下做到这一点。当我想比较不同字段的结构时,如何实现sort.Interface对我来说并不难。 最佳答案 嗯,最简单的方法是切换field类型并分配一个SORT函数。这是您的代码:packagemainimport("fmt""sort")typeSortableSt

go - 如何在结构中打印结构 slice 的标记

我有结构配置,它由字段SliceOfAnotherStruct组成,其中包含指向的指针的sliceAnotherStruct.这里如何获取AnotherStruct中Bank字段的json标签。typeConfigstruct{SliceOfAnotherStruct[]*AnotherStruct`bson:"anotherStruct"json:"anotherStruct"validate:"required,dive,required"`}typeAnotherStructstruct{Namestring`bson:"name"json:"name"validate:"req

go - 将方法添加到嵌套的导出结构中

我想在导出结构中使用的嵌套导出结构中添加一个方法。我有一个由ldap.Search().Entries返回的[]*ldap.Entry类型ldap.Entry类型由Attributes[]*EntryAttribute组成。我的目标是在ldap.EntryAttribute中添加一个额外的方法,例如MarshalJSON我可以将额外的代码直接添加到ldap包中,它会按我预期的那样工作。但这是一种肮脏的方式://EntryAttributeholdsasingleattributetypenewEntryAttributestruct{//Nameisthenameoftheattrib

go - 在结构定义之外使用方法的原因是什么?

为什么我们要在结构的类型定义之外声明方法?例如:typeantennastruct{namestringlengthfloat32girthfloat32bloodtypestring}func(p*antenna)extend(){p.length+=10}在我看来,该方法可能是结构的一部分?(让我们暂时忽略结构应该是值类型)typeantennastruct{namestringlengthfloat32girthfloat32bloodtypestringfuncextend(){length+=10}}这更类似于传统的OOP。除了“结构是值类型而类是引用类型”之外,我没有找到任

go - 如何使用变量访问结构?

我是Go新手,在访问带有变量的结构时遇到问题我有这个函数decodeUser。我的任务是检查请求中是否存在key。所以这就是我所做的。我在出现错误的地方添加了评论。funcdecodeUser(r*http.Request)(root.User,[]string,error){varuroot.Userifr.Body==nil{returnu,[]string{},errors.New("norequestbody")}decoder:=json.NewDecoder(r.Body)checks:=[]string{"UserName","FirstName","LastName",

go - 更新结构中的 map[string]*struct 变量

packagemainimport"fmt"typeStatestringconst(//PASScheckpassed.PASSState="PASS"//FAILcheckfailed.FAIL="FAIL"//WARNcouldnotcarryoutcheck.WARN="WARN"//INFOinformationalmessageINFO="INFO"//SKIPfortestsskippedSKIP="SKIP")//SummaryLevelWiseisasummaryofresultsofcontrolchecksrunCISLevelwisetypeSomethings